কাস্টম এক্সেপশন

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) এক্সেপশন হ্যান্ডলিং |
226
226

কাস্টম এক্সেপশন (Custom Exception) হলো C++ এ প্রোগ্রামারের নিজের তৈরি করা এক্সেপশন, যা সাধারণত স্ট্যান্ডার্ড এক্সেপশন (যেমন std::runtime_error বা std::logic_error) থেকে আলাদা এবং নির্দিষ্ট ত্রুটিপূর্ণ অবস্থাগুলিকে আরও স্পষ্টভাবে নির্দেশ করে। কাস্টম এক্সেপশন ক্লাস তৈরি করে প্রোগ্রামের বিভিন্ন স্থানে নির্দিষ্ট ত্রুটি পরিচালনা করা সহজ হয়।

কাস্টম এক্সেপশন তৈরি করা

C++ এ কাস্টম এক্সেপশন তৈরি করার জন্য সাধারণত std::exception ক্লাসটি ইনহেরিট করতে হয় এবং what() মেথড ওভাররাইড করে কাস্টম ত্রুটি বার্তা প্রদান করা হয়।

উদাহরণ: কাস্টম এক্সেপশন

#include <iostream>
#include <exception>
using namespace std;

class DivisionByZeroException : public exception { // কাস্টম এক্সেপশন ক্লাস
public:
    const char* what() const noexcept override { // what() মেথড ওভাররাইড
        return "Error: Division by zero is not allowed!";
    }
};

int divide(int a, int b) {
    if (b == 0) {
        throw DivisionByZeroException(); // এক্সেপশন ছোড়া হচ্ছে
    }
    return a / b;
}

int main() {
    try {
        int result = divide(10, 0); // Division by zero এক্সেপশন ট্রিগার
        cout << "Result: " << result << endl;
    }
    catch (const DivisionByZeroException& e) { // কাস্টম এক্সেপশন হ্যান্ডল করা
        cout << e.what() << endl;
    }

    return 0;
}

বর্ণনা:

  • DivisionByZeroException নামে একটি কাস্টম এক্সেপশন ক্লাস তৈরি করা হয়েছে, যা std::exception ক্লাস থেকে ইনহেরিট করা।
  • what() মেথড ওভাররাইড করা হয়েছে, যা কাস্টম ত্রুটি বার্তা প্রদান করে।
  • divide() ফাংশনে যদি ডেনোমিনেটর 0 হয়, তবে DivisionByZeroException এক্সেপশন ছোড়া হয়।
  • main() ফাংশনে catch ব্লক সেই এক্সেপশন ধরে এবং what() মেথডের মাধ্যমে ত্রুটি বার্তা প্রদর্শন করে।

কাস্টম এক্সেপশন আরও উদাহরণ: ফাইল সম্পর্কিত কাস্টম এক্সেপশন

#include <iostream>
#include <fstream>
#include <exception>
using namespace std;

class FileNotFoundException : public exception {
public:
    const char* what() const noexcept override {
        return "Error: File not found!";
    }
};

void openFile(const string& filename) {
    ifstream file(filename);
    if (!file.is_open()) {
        throw FileNotFoundException(); // ফাইল না পাওয়া গেলে এক্সেপশন ছোড়া
    }
    cout << "File opened successfully!" << endl;
}

int main() {
    try {
        openFile("nonexistent.txt"); // যে ফাইলটি নেই তা ওপেন করতে চেষ্টা করা হচ্ছে
    }
    catch (const FileNotFoundException& e) { // কাস্টম এক্সেপশন ক্যাচ করা
        cout << e.what() << endl;
    }

    return 0;
}

বর্ণনা:

  • FileNotFoundException নামে একটি কাস্টম এক্সেপশন ক্লাস তৈরি করা হয়েছে, যা ফাইল না পাওয়ার ক্ষেত্রে নির্দিষ্ট ত্রুটি বার্তা প্রদান করে।
  • openFile() ফাংশনে যদি ফাইল খোলা সম্ভব না হয়, তবে FileNotFoundException এক্সেপশন ছোড়া হয় এবং main()catch ব্লকে সেটি ধরা হয়।

কাস্টম এক্সেপশন ক্লাস তৈরি করার সময় কিছু নির্দেশনা

  1. std::exception ক্লাস থেকে ইনহেরিট করা: এটি করা জরুরি নয়, তবে করা হলে std::exception এর বৈশিষ্ট্যগুলো সহজেই পাওয়া যায়।
  2. what() মেথড ওভাররাইড করা: কাস্টম বার্তা প্রদানের জন্য what() মেথড ওভাররাইড করে নির্দিষ্ট বার্তা প্রদান করা হয়।
  3. কাস্টম তথ্য পাস করা: যদি এক্সেপশনের সময় অতিরিক্ত তথ্য পাস করতে হয়, তবে কনস্ট্রাক্টরের মাধ্যমে সেই তথ্য গ্রহণ করা যেতে পারে।

উদাহরণ: কনস্ট্রাক্টরের মাধ্যমে বার্তা পাস করা

#include <iostream>
#include <exception>
#include <string>
using namespace std;

class CustomException : public exception {
    string message;
public:
    CustomException(const string& msg) : message(msg) {}

    const char* what() const noexcept override {
        return message.c_str();
    }
};

int main() {
    try {
        throw CustomException("Custom error occurred with additional details."); // কাস্টম বার্তা সহ এক্সেপশন ছোড়া হচ্ছে
    }
    catch (const CustomException& e) {
        cout << e.what() << endl; // কাস্টম বার্তা প্রদর্শন করা হচ্ছে
    }

    return 0;
}

বর্ণনা:

  • এখানে CustomException ক্লাসে একটি কনস্ট্রাক্টর যোগ করা হয়েছে, যা একটি বার্তা গ্রহণ করে।
  • what() মেথড ওভাররাইড করে সেই বার্তা প্রদর্শন করা হচ্ছে।

কাস্টম এক্সেপশনের সুবিধা

  1. বিশেষ ত্রুটি পরিচালনা: কাস্টম এক্সেপশন তৈরি করে বিশেষ ধরনের ত্রুটি সনাক্ত করা এবং সেগুলি সহজেই হ্যান্ডল করা যায়।
  2. কোডের পঠনযোগ্যতা বৃদ্ধি: কাস্টম এক্সেপশন ক্লাস ব্যবহার করলে কোডের পঠনযোগ্যতা বাড়ে এবং ত্রুটি হ্যান্ডলিং আরও পরিষ্কার হয়।
  3. পরিষ্কার বার্তা প্রদান: কাস্টম বার্তা প্রদান করে ত্রুটির সঠিক কারণ এবং অবস্থান সম্পর্কে স্পষ্ট ধারণা দেওয়া যায়।
  4. কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি: একবার একটি কাস্টম এক্সেপশন ক্লাস তৈরি করলে তা অন্যান্য ফাংশন বা মডিউলে পুনরায় ব্যবহার করা যায়।

সারসংক্ষেপ

  • কাস্টম এক্সেপশন হলো প্রোগ্রামারের নিজের তৈরি করা এক্সেপশন, যা বিশেষ ধরনের ত্রুটি হ্যান্ডলিংয়ে সহায়ক।
  • std::exception ক্লাস থেকে ইনহেরিট করে কাস্টম এক্সেপশন ক্লাস তৈরি করা যায়।
  • what() মেথড ওভাররাইড করে কাস্টম বার্তা প্রদান করা যায়।

কাস্টম এক্সেপশন ব্যবহার করে ত্রুটি হ্যান্ডলিং আরও নির্দিষ্ট এবং কার্যকরী করা যায়, যা বড় প্রোগ্রামে ত্রুটি সনাক্ত ও সমাধানকে সহজ করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion